<template>
    <div>
        <el-row :gutter="20">
            <el-col :span="8">
                <el-card shadow="hover" class="mgb20" style="height:252px;">
                    <div class="user-info">
                        <img :src="thumb" class="user-avator" alt/>
                        <div class="user-info-cont">
                            <div class="user-info-name">{{name}}</div>
                            <div>{{role}}</div>
                        </div>
                    </div>
                    <div class="user-info-list">
                        欢迎使用
                        <span>{{new Date()}}</span>
                    </div>
                </el-card>
                <el-card shadow="hover" style="height:450px;">
                    <div slot="header" class="clearfix">
                        <span>考勤统计</span>
                    </div>
                    <ve-bar :data="chartData"></ve-bar>
                </el-card>
            </el-col>
            <el-col :span="16">
                <el-row :gutter="20" class="mgb20">
                    <el-col :span="8">
                        <el-card shadow="hover" :body-style="{padding: '0px'}">
                            <div class="grid-content grid-con-1">
                                <i class="el-icon-lx-people grid-con-icon"></i>
                                <div class="grid-cont-right">
                                    <div class="grid-num">{{users}}</div>
                                    <div>用户数量</div>
                                </div>
                            </div>
                        </el-card>
                    </el-col>
                    <el-col :span="8">
                        <el-card shadow="hover" :body-style="{padding: '0px'}">
                            <div class="grid-content grid-con-2">
                                <i class="el-icon-lx-notice grid-con-icon"></i>
                                <div class="grid-cont-right">
                                    <div class="grid-num">{{articles}}</div>
                                    <div>通知数量</div>
                                </div>
                            </div>
                        </el-card>
                    </el-col>
                    <el-col :span="8">
                        <el-card shadow="hover" :body-style="{padding: '0px'}">
                            <div class="grid-content grid-con-3">
                                <i class="el-icon-lx-goods grid-con-icon"></i>
                                <div class="grid-cont-right">
                                    <div class="grid-num">{{chartData.rows.length}}</div>
                                    <div>员工迟到、早退次数</div>
                                </div>
                            </div>
                        </el-card>
                    </el-col>
                </el-row>
                <!--article-->
                <el-card shadow="hover" style="height:603px;">
                    <div slot="header" class="clearfix">
                        <span>通知栏</span>
                    </div>
                    <el-table :show-header="false" :data="todoList" style="width:100%;">
                        <el-table-column width="40">
                            <template slot-scope="scope">
                                <el-checkbox v-model="scope.row.status"
                                             @change="changeStatus(scope.row.id,scope.row.status)"></el-checkbox>
                            </template>
                        </el-table-column>
                        <el-table-column>
                            <template slot-scope="scope">
                                <div
                                        class="todo-item"
                                        :class="{'todo-item-del': scope.row.status}"
                                        @click="go(scope.row.id)"
                                >{{scope.row.title}}
                                </div>
                            </template>
                        </el-table-column>
                    </el-table>
                    <el-pagination
                            hide-on-single-page
                            small
                            @prev-click="prev_click"
                            @next-click="next_click"
                            :page-size="6"
                            @current-change="current_change"
                            layout="prev, pager, next"
                            :total="total">
                    </el-pagination>
                </el-card>
            </el-col>
        </el-row>
    </div>
</template>

<script>
    import Schart from 'vue-schart';
    import bus from '../common/bus';
    import service from "../../utils/request";

    export default {
        name: 'firstPage',
        data() {
            return {
                users: 0,
                articles: 0,
                total: 0,
                pageIndex: 1,
                thumb: JSON.parse(localStorage.getItem('userInfo')).thumb,
                name: JSON.parse(localStorage.getItem('userInfo')).name,
                todoList: [],
                chartData: {
                    columns: [],
                    rows: []
                }, chartData2: {
                    columns: [],
                    rows: []
                }
            };
        },
        components: {
            Schart
        },
        computed: {
            role() {
                return JSON.parse(localStorage.getItem("userInfo")).job;
            }
        },
        created() {
            this.init()
            this.getToDoList()
            this.countUsers()
            this.countsArticles()
        },
        methods: {
            countsArticles() {
                service.get('/article/count').then(res => {
                    this.articles = res
                })
            },
            init() {
                this.$axios.get('/record/charts').then(res => {
                    this.chartData = res.data
                })
            },
            countUsers() {
                service.get('/users/countUsers').then(res => {
                    this.users = res
                })
            },
            //路由跳转
            go(id) {
                this.$router.push({
                    name: 'article',
                    params: {
                        id: id
                    }
                })
            },
            changeStatus(id, status) {
                service.get('/article/updStatus', {
                    params: {
                        id: id,
                        status: status ? 1 : 0
                    }
                }).then(res => {
                    console.log(res)
                })
            },
            /*分页相关*/
            current_change(pageIndex) {
                this.pageIndex = pageIndex
                this.getToDoList()
            },
            prev_click() {
                this.pageIndex--
                this.getToDoList()
            }, next_click() {
                this.pageIndex++
                this.getToDoList()
            },
            changeDate() {
                const now = new Date().getTime();
                this.data.forEach((item, index) => {
                    const date = new Date(now - (6 - index) * 86400000);
                    item.name = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
                });
            }, getToDoList() {
                service.get('/article/getArticle', {
                    params: {
                        pageIndex: this.pageIndex,
                        userId: JSON.parse(localStorage.getItem("userInfo")).id
                    }
                }).then(res => {
                    this.total = res.total
                    this.todoList = []
                    for (let i = 0; i < res.message.length; i++) {
                        this.todoList.push({
                            id: res.message[i].id,
                            title: res.message[i].title,
                            status: res.message[i].status == "1"
                        })
                    }
                })
            }
            // handleListener() {
            //     bus.$on('collapse', this.handleBus);
            //     // 调用renderChart方法对图表进行重新渲染
            //     window.addEventListener('resize', this.renderChart);
            // },
            // handleBus(msg) {
            //     setTimeout(() => {
            //         this.renderChart();
            //     }, 200);
            // },
            // renderChart() {
            //     this.$refs.bar.renderChart();
            //     this.$refs.line.renderChart();
            // }
        }
    };
</script>


<style scoped>
    .el-row {
        margin-bottom: 20px;
    }

    .grid-content {
        display: flex;
        align-items: center;
        height: 100px;
    }

    .grid-cont-right {
        flex: 1;
        text-align: center;
        font-size: 14px;
        color: #999;
    }

    .grid-num {
        font-size: 30px;
        font-weight: bold;
    }

    .grid-con-icon {
        font-size: 50px;
        width: 100px;
        height: 100px;
        text-align: center;
        line-height: 100px;
        color: #fff;
    }

    .grid-con-1 .grid-con-icon {
        background: rgb(45, 140, 240);
    }

    .grid-con-1 .grid-num {
        color: rgb(45, 140, 240);
    }

    .grid-con-2 .grid-con-icon {
        background: rgb(100, 213, 114);
    }

    .grid-con-2 .grid-num {
        color: rgb(45, 140, 240);
    }

    .grid-con-3 .grid-con-icon {
        background: rgb(242, 94, 67);
    }

    .grid-con-3 .grid-num {
        color: rgb(242, 94, 67);
    }

    .user-info {
        display: flex;
        align-items: center;
        padding-bottom: 20px;
        border-bottom: 2px solid #ccc;
        margin-bottom: 20px;
    }

    .user-avator {
        width: 120px;
        height: 120px;
        border-radius: 50%;
    }

    .user-info-cont {
        padding-left: 50px;
        flex: 1;
        font-size: 14px;
        color: #999;
    }

    .user-info-cont div:first-child {
        font-size: 30px;
        color: #222;
    }

    .user-info-list {
        font-size: 14px;
        color: #999;
        line-height: 25px;
    }

    .user-info-list span {
        margin-left: 70px;
    }

    .mgb20 {
        margin-bottom: 20px;
    }

    .todo-item {
        font-size: 14px;
    }

    .todo-item-del {
        text-decoration: line-through;
        color: #999;
    }

    .schart {
        width: 100%;
        height: 300px;
    }
</style>
